package main

import (
	"fmt"
	"sort"
	"time"

	"math/rand"
)

func main() {
	// 数字重复统计
	// 随机产生100个整数
	// 数字的范围[-100, 100]
	// 降序输出这些生成的数字并打印其重复的次数
	rand.Seed(time.Now().UnixNano())

	// 生成并统计
	countMap := make(map[int]int)
	for i := 0; i < 100; i++ {
		num := rand.Intn(201) - 100
		countMap[num]++
	}

	// 提取数字并降序排序
	nums := make([]int, 0, len(countMap))
	for num := range countMap {
		nums = append(nums, num)
	}
	sort.Sort(sort.Reverse(sort.IntSlice(nums)))

	// 输出
	fmt.Println("数字\t出现次数")
	fmt.Println("-----------+-----------")
	for _, num := range nums {
		fmt.Printf("%4d\t%4d\n", num, countMap[num])
	}
}
